package com.sqx.modules.tbOrders.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.sqx.modules.app.entity.SysEvaluate;
import com.sqx.modules.goods.entity.Goods;
import com.sqx.modules.recovery.entity.GoodsSpecifications;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 商品订单
 *
 * @TableName tb_orders
 */
@Data
public class TbOrders implements Serializable {
    /**
     * 订单id
     */
    @ApiModelProperty(value = "订单id")
    @TableId(value = "order_id", type = IdType.AUTO)
    private Long orderId;

    /**
     * 订单号
     */
    @ApiModelProperty(value = "订单号")
    private String orderNumber;

    /**
     * 买方用户id
     */
    @ApiModelProperty(value = "买方用户id")
    private Long buyerId;

    /**
     * 买方用户名称
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "买方用户名称")
    private String buyerName;

    /**
     * 卖方用户id
     */
    @ApiModelProperty(value = "卖方用户id")
    private Long sellerId;

    /**
     * 卖方用户名称
     */
    @TableField(exist = false)
    @ApiModelProperty(value = "卖方用户名称")
    private String sellerName;
    /**
     * 优惠券id
     */
    @ApiModelProperty(value = "优惠券id")
    private Long couponId;

    /**
     * 优惠券金额
     */
    @ApiModelProperty("优惠券金额")
    private BigDecimal couponMoney;

    /**
     * 购买数量
     */
    @ApiModelProperty(value = "购买数量")
    private Integer buyNum;

    /**
     * 商品id
     */
    @ApiModelProperty(value = "商品id")
    private Long goodId;

    /**
     * 订单金额
     */
    @ApiModelProperty("订单金额")
    private BigDecimal orderMoney;

    /**
     * 总价
     */
    @ApiModelProperty(value = "总价")
    private BigDecimal totalPrice;

    /**
     * 是否已支付 0否 1是
     */
    @ApiModelProperty(value = "是否已支付 0否 1是")
    private Integer isPay;

    /**
     * 支付类型 1 2 3微信 4 5支付宝 6余额（零钱）
     */
    @ApiModelProperty(value = "支付类型 1 2 3微信 4 5支付宝 6余额（零钱）")
    private Integer payWay;

    /**
     * 状态 0待支付 1待发货 2待收货 3待评价 4已完成 5已取消 6待回收 7已回收 8待收货 9回收人员已确认收货
     */
    @ApiModelProperty(value = "状态 0待支付 1待发货 2待收货 3待评价 4已完成 5已取消 6待回收 7已回收 8待收货 9回收人员已确认收货")
    private Integer status;

    /**
     * 创建时间（下单时间）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @ApiModelProperty(value = "创建时间（下单时间）")
    private Date createTime;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @ApiModelProperty(value = "支付时间")
    private Date payTime;

    /**
     * 发货时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @ApiModelProperty(value = "发货时间")
    private Date sendTime;

    /**
     * 成交时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @ApiModelProperty(value = "成交时间")
    private Date dealTime;

    /**
     * 取消时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @ApiModelProperty(value = "取消时间")
    private Date cancelTime;

    /**
     * 是否回收订单：0回收订单  1不是回收订单
     */
    @ApiModelProperty(value = "是否回收订单：0回收订单  1不是回收订单")
    private Integer retrieveType;

//    /**
//     * 用户id
//     */
//    @ApiModelProperty(value = "用户id")
//    @TableField(exist = false)
//    private Long userId;

    /**
     * 是否已评论 0否 1是
     */
    @ApiModelProperty(value = "是否已评论 0否 1是")
    private Integer isEvaluate;

    /**
     * 任务表id
     */
    @ApiModelProperty("任务表id")
    private Long taskId;

//    /**
//     * 保存的json数据
//     */
//    private String dataJson;

    /**
     * 回收物品id
     */
    @ApiModelProperty("回收物品id")
    private Long recoveryId;

    /**
     * 发货方式：0邮寄  1包邮  2自取 (回收 1上门 2快递邮寄)
     */
    @ApiModelProperty(value = "发货方式：0邮寄  1包邮  2自取 (回收 1上门 2快递邮寄)")
    private Integer deliveryStatus;

    /**
     * 地址id
     */
    @ApiModelProperty(value = "地址id")
    private Long addressId;

    /**
     * 取件时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @ApiModelProperty(value = "取件时间")
    private String deliveryTime;

    /**
     * 商品价格
     */
    @ApiModelProperty("商品价格")
    @TableField(exist = false)
    private BigDecimal  goodPrice;

    /**
     * 规格列表
     */
    @ApiModelProperty(value = "规格列表")
    @TableField(exist = false)
    private List<GoodsSpecifications> specifications;

    /**
     * 首页图
     */
    @ApiModelProperty(value = "首页图")
    @TableField(exist = false)
    private String titleImg;


//    /**
//     * 下单人昵称
//     */
//    @ApiModelProperty(value = "下单人昵称")
//    @TableField(exist = false)
//    private String userName;
    /**
     * 下单人头像
     */
    @ApiModelProperty(value = "下单人头像")
    @TableField(exist = false)
    private String avatar;
    /**
     * 下单人手机号
     */
    @ApiModelProperty(value = "下单人手机号")
    @TableField(exist = false)
    private String phone;

    /**
     * 标签名称
     */
    @ApiModelProperty(value = "标签名称")
    @TableField(exist = false)
    private String label;

    /**
     * 类型名称
     */
    @ApiModelProperty(value = "类型名称")
    @TableField(exist = false)
    private String typeName;

    /**
     * 评价信息
     */
    @ApiModelProperty(value = "评价信息")
    @TableField(exist = false)
    private SysEvaluate sysEvaluate;

//    /**
//     * 评价内容
//     */
//    private String evaluateMessage;
//
//    /**
//     * 评价图片
//     */
//    private String evaluateImg;
//
//    /**
//     * 评价时间
//     */
//    private String evaluateTime;
//
//    /**
//     * 评价得分
//     */
//    private Integer satisfactionFlag;


    /**
     * 新旧程度
     */
    @ApiModelProperty(value = "新旧程度")
    @TableField(exist = false)
    private String degreeName;

    /**
     * 品牌名称
     */
    @ApiModelProperty(value = "品牌名称")
    @TableField(exist = false)
    private String brandName;

    /**
     * 商品
     */
    @ApiModelProperty(value = "商品")
    @TableField(exist = false)
    private Goods goods;

    /**
     * 统计有多少人想要
     */
    @ApiModelProperty(value = "统计有多少人想要")
    @TableField(exist = false)
    private Integer needCount;

    /**
     * 发货方式：0自提  1邮寄  2包邮(普通商品用的)
     */
    @ApiModelProperty(value = "发货方式：0自提  1邮寄  2包邮")
    @TableField(exist = false)
    private Integer delivery;

    /**
     * 快递单号
     */
    @ApiModelProperty(value = "快递单号")
    private String trackingNumber;

    /**
     * 地址详情
     */
    @ApiModelProperty(value = "地址详情")
    private String addressDetail;

    /**
     * 卖家收入
     */
    @ApiModelProperty(value = "卖家收入")
    private BigDecimal sellerIncome;

    /**
     * 平台收入
     */
    @ApiModelProperty(value = "平台收入")
    private BigDecimal platformIncome;

    /**
     * 邮费
     */
    @ApiModelProperty("邮费")
    private Integer postage;

    /**
     * 品牌图片
     */
    @ApiModelProperty(value = "品牌图片")
    @TableField(exist = false)
    private String brandImg;

    /**
     * 订单备注
     */
    @ApiModelProperty(value = "订单备注")
    private String remarks;

    /**
     * 机型名称
     */
    @ApiModelProperty(value = "机型名称")
    @TableField(exist = false)
    private String recoveryName;

    /**
     * 卖家手机号
     */
    @ApiModelProperty(value = "卖家手机号")
    @TableField(exist = false)
    private String sellerPhone;

    /**
     * 快递公司
     */
    @ApiModelProperty(value = "快递公司")
    private String expressCompany;

    /**
     * 一级佣金
     */
    @ApiModelProperty(value = "一级佣金")
    private BigDecimal firstCommission;

    /**
     * 二级佣金
     */
    @ApiModelProperty(value = "二级佣金")
    private BigDecimal secondCommission;

    /**
     * 一级用户id
     */
    @ApiModelProperty(value = "一级用户id")
    private Long firstUserId;

    /**
     * 二级用户id
     */
    @ApiModelProperty(value = "二级用户id")
    private Long secondUserId;

    /**
     * 是否出具质检报告：1是 2否
     */
    @ApiModelProperty(value = "是否出具质检报告：1是 2否")
    private Integer recycledStatus;

    /**
     * 回收后质检报告的图片
     */
    @ApiModelProperty(value = "回收后质检报告的图片")
    private String recycledImg;

    private static final long serialVersionUID = 1L;

}